package com.unisinos.eadii.grafo;

/**
 * Fila utilizada no na busca em largura
 * @author Robert Lafore (Data Structures and Algorithms in Java)
 * @version 0.1
 */
public class Queue {

	private final int SIZE = 20;
	private int[] queArray;
	private int front;
	private int rear;

	/**
	 * Class Constructor inicia a pilha
	 */
	public Queue() {
		queArray = new int[SIZE];
		front = 0;
		rear = -1;
	}

	/**
	 * Insere um elemento no fim da fila
	 * @param  int  j  Inteiro representante da fronteira
	 */
	public void insert(int j) {
		if(rear == SIZE-1)
			rear = -1;
			queArray[++rear] = j;
	}

	/**
	 * Removo um elemento do início da fila
	 * @return  int  Elemento removido
	 */
	public int remove() {
		int temp = queArray[front++];
		if(front == SIZE)
			front = 0;
		return temp;
	}

	/**
	 * Verifica se a fila está vazia
	 * @param  boolean  Verdadeiro se a fila está vazia
	 */
	public boolean isEmpty() {
		return ( rear+1==front || (front+SIZE-1==rear) );
	}
}